package tech.aistar.day02;

/**
 * 本类用来演示: 运算符
 *
 * @author: success
 * @date: 2021/3/5 9:54 上午
 */
public class NounDemo {
    public static void main(String[] args) {
        //计算机中最高位是代表符号位,符号1代表的是负数,0代表的正数
        //高低压电平 - 存储1数字需要消耗-5v的电压,存储数字0,不需要消耗电压的.
        byte b = 127;
        //b = b + 1;//error
        b++;//ok , 慎重使用的,底层会进行强制类型转换的(byte)(b+1);
        //b+=1;
        System.out.println("b:"+b);//-128

        //++ , --
        //配合switch..case...
        int t = 1;
        int r1 = ++t;//前++
        System.out.println("t:"+t);//2
        System.out.println("r1:"+r1);//2

        t = 1;
        //把变量t自增之前的值赋值给了变量r2
        int r2 = t++;//后++
        System.out.println("t:"+t);//2
        System.out.println("r2:"+r2);//1

        int x = 1;
        //x=2   3     2   1

        //++x   x++  --x  x--
        //2     2     2   2

        int y = ++x + x++ + --x + x--;
        System.out.println(y);//y = 8
        //x=0
        //x--  --y ++x
        //1    7   1 = 9
        int result = x-- + --y + ++x;
        System.out.println(result);

        short s = 100;
//        s = s + 1;
        //强制类型转换
        s+=1;//ok -> (short)(s + 1)
        System.out.println(s);

        //小数在进行计算的时候 - 未来是要进行特殊处理的
        //小数在进行计算的时候,会有精度的丢失
        //计算机底层都是将数字转换成对应的二进制之后才会进行计算的.
        //处理的java.math.BigDecimal - jdk内置的对象类型
        System.out.println(0.1+0.2);//0.30000000000000004

        System.out.println(3>2);

        System.out.println(3>2 && false && 1<2);//false

        //短路的特点 - 如果左边的表达式已经能够决定整个结果,那么后面的表达式将不会执行,提高运行效率的.
        System.out.println(1<2 && 3>2 && 9>3);

        //证明短路
        int s1 = 1;
        System.out.println(3>5 && (++s1)>1);
        System.out.println(s1);//1

        System.out.println(2<3 || true);//true

        System.out.println(!(3>2));//false
        System.out.println(!false);//true
    }
}
